#!/bin/bash

# 储能模拟数据服务启动脚本
# 使用方法：
# ./start.sh                    # 前台运行，默认端口18091
# ./start.sh 9090               # 前台运行，指定端口9090
# ./start.sh -d                 # 后台运行，默认端口18091
# ./start.sh -d 9090            # 后台运行，指定端口9090
# SERVER_PORT=9090 ./start.sh -d # 使用环境变量指定端口，后台运行

# 设置默认端口
DEFAULT_PORT=18091

# 解析参数
DAEMON=false
PORT=""

while [[ $# -gt 0 ]]; do
    case $1 in
        -d|--daemon)
            DAEMON=true
            shift
            ;;
        *)
            if [[ $1 =~ ^[0-9]+$ ]]; then
                PORT=$1
            fi
            shift
            ;;
    esac
done

# 确定最终端口
if [ -z "$PORT" ]; then
    if [ ! -z "$SERVER_PORT" ]; then
        PORT=$SERVER_PORT
    else
        PORT=$DEFAULT_PORT
    fi
fi

echo "启动储能模拟数据服务，端口: $PORT"

# 检查jar文件是否存在
JAR_FILE="target/easyStorageSimulateData-0.0.1-SNAPSHOT.jar"
if [ ! -f "$JAR_FILE" ]; then
    echo "错误: 找不到jar文件 $JAR_FILE"
    echo "请先执行 mvn clean package 打包应用"
    exit 1
fi

# 创建日志目录
mkdir -p logs

# 设置PID文件路径
PID_FILE="logs/app.pid"
LOG_FILE="logs/app.log"

# 检查是否已经运行
if [ -f "$PID_FILE" ]; then
    PID=$(cat "$PID_FILE")
    if ps -p $PID > /dev/null 2>&1; then
        echo "错误: 服务已经在运行 (PID: $PID)"
        echo "请先停止服务或删除 $PID_FILE 文件"
        exit 1
    else
        echo "清理旧的PID文件"
        rm -f "$PID_FILE"
    fi
fi

# 启动应用
if [ "$DAEMON" = true ]; then
    echo "后台模式启动服务..."
    nohup java -jar -Dserver.port=$PORT $JAR_FILE > "$LOG_FILE" 2>&1 &
    PID=$!
    echo $PID > "$PID_FILE"
    echo "服务已启动，PID: $PID"
    echo "日志文件: $LOG_FILE"
    echo "使用 './stop.sh' 停止服务"
    echo "使用 './status.sh' 查看服务状态"
else
    echo "前台模式启动服务..."
    java -jar -Dserver.port=$PORT $JAR_FILE
fi
